The size and complexity of computing networks and data centers has rapidly grown, and the number of servers and other devices within these data centers has expanded greatly. Customer requirements changed introducing multiple operating systems, optimized hardware configurations, more rapid application development cycles, and unpredictable demand for computing resources. The cost, size, energy consumption, and complexity of data centers built around individual servers, personal computers (PCs), storage devices, etc. became prohibitive to maintain. Data centers have evolved away from individual servers and PCs to rack mounted “blade” server “farms” and RISC (reduced instruction set computing) systems (computing clusters) and most recently “cloud” computing powered by mainframe computers that can be “virtualized” into entities and systems tailored to a customer's requirements.
In system virtualization, multiple virtual entities are created and “hosted” within a physical system. Examples of virtual entities are: virtual servers, virtual storage, virtual networks including virtual private networks, virtual applications and operating systems, and virtual clients. The physical system can be a stand-alone computer, or alternatively, a computing system utilizing clustered computers and components. Virtual systems are independent operating environments that use virtual resources made up of logical divisions of physical resources such as microprocessors, memory and input/output (I/O) adapters. This system virtualization is implemented through some managing functionality, typically hypervisor technology. Hypervisors, also called virtual machine managers (VMMs), use a thin layer of code in software or firmware to achieve fine-grained, dynamic resource sharing. Because hypervisors provide the greatest level of flexibility in how resources are defined and managed, they are the primary technology for system virtualization.
Hypervisors provide the ability to divide physical computing system resources into isolated logical partitions (also referred to as LPARs). Each logical partition operates like an independent computing system running its own operating system (e.g., a virtual system, a virtual machine). Operating systems utilized in this fashion include AIX®, IBM® i, Linux®, and the virtual I/O server (VIOS). Hypervisors allocate dedicated processors (i.e., CPUs), I/O adapters, and memory to each logical partition. Additionally, hypervisors allocate shared or virtualized resources (e.g., processors, memory, storage space, etc.) to each virtual machine (VM). Unbeknownst to the virtual machines, the hypervisor creates a shared processor pool from which the hypervisor allocates virtual resources to the virtual machines as needed. In other words, the hypervisor creates virtual processors, virtual memory, etc. from physical resources so that virtual machines are capable of sharing the physical resources while running independent operating environments.
The hypervisor also dynamically allocates and de-allocates dedicated or shared resources (such as processors, I/O, and memory) across LPARs while the virtual machines are actively in use. This is known as dynamic logical partitioning or dynamic LPAR and allows the hypervisor to dynamically redefine all available system resources to reach optimum capacity for each partition.
Data centers utilizing virtualization of computing resources range from enterprise systems dedicated to a site within a company to distributed computing environments that sell access to their computing resources on an as-needed basis (e.g., cloud computing). Cloud computing is a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources that may be rapidly provisioned and released with minimal management effort or interaction with a provider of the service. For example, cloud computing allows a customer to obtain data processing resources, such as networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services as a service on a temporary basis when needed.
A customer of cloud computing services may have its own data processing system resources. At certain times, the customer requires data processing resources beyond those available in its computer network. For example, at certain times, the demand for data processing resources outstrips the capability of the customer's computer network. At these times, the response time of the customer's computer network for some applications increases to unacceptable levels. At other times, the customer requires data processing applications that are not available on the customer's own computer network. For example, the customer requires, at times, the use of data processing applications that are not part of the customer's core competency. At those times when the customer requires data processing resources beyond its own, the customer purchases such resources as a service, on a temporary basis, from a provider of cloud computing services. For example, the customer may obtain additional processing or storage resources or specific application functionality as a service on a temporary basis.